{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "lin_reg = LinearRegression()\n",
    "\n",
    "def PolynomialRegression(degree):\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"lin_reg\", lin_reg)\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "np.random.seed(666)\n",
    "x = np.random.uniform(-3, 3, size=100)\n",
    "X = x. reshape(-1, 1)\n",
    "y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, size=100)\n",
    "\n",
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6880004678712686"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "poly100_reg = PolynomialRegression(degree=100)\n",
    "poly100_reg.fit(X, y)\n",
    "y100_predict = poly100_reg.predict(X)\n",
    "mean_squared_error(y, y100_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y100_predict = poly100_reg.predict(X)\n",
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y100_predict[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "y_plot = poly100_reg.predict(X_plot)\n",
    "plt.scatter(x, y)\n",
    "plt.plot(X_plot[:, 0], y_plot, color='r')\n",
    "plt.axis([-3, 3, -1, 10])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.21097006e+12,  1.19198819e+01,  1.78867904e+02, -2.95987019e+02,\n",
       "       -1.79531579e+04, -1.54151064e+04,  8.34384008e+05,  8.19758499e+05,\n",
       "       -2.23628081e+07, -1.44767967e+07,  3.87211849e+08,  1.13415788e+08,\n",
       "       -4.61600837e+09, -1.25028833e+08,  3.93150842e+10, -5.47613295e+09,\n",
       "       -2.44176507e+11,  5.46306491e+10,  1.11421150e+12, -2.76412491e+11,\n",
       "       -3.71329570e+12,  8.55468251e+11,  8.80961399e+12, -1.60750401e+12,\n",
       "       -1.39204217e+13,  1.49444135e+12,  1.19236839e+13,  2.47521688e+11,\n",
       "        4.42430553e+11, -1.64287100e+12, -1.05153908e+13, -1.80895216e+11,\n",
       "        3.00207361e+12,  2.75578358e+12,  8.74123180e+12, -1.36695737e+12,\n",
       "       -1.22670880e+12, -7.00478229e+11, -8.24896132e+12, -8.66309669e+11,\n",
       "       -2.75689072e+12,  1.39629460e+12,  6.26144462e+12, -3.47974176e+11,\n",
       "        6.29124500e+12,  1.33767267e+12, -6.11898796e+11,  2.92306225e+11,\n",
       "       -6.59758602e+12, -1.85664319e+12, -4.13408892e+12, -9.72006661e+11,\n",
       "       -3.99038794e+11, -7.53680910e+11,  5.49213942e+12,  2.18520516e+12,\n",
       "        5.24342787e+12,  7.50245141e+11,  5.50263530e+11,  1.70648559e+12,\n",
       "       -2.26789352e+12, -1.84598222e+11, -5.47303676e+12, -2.86220611e+12,\n",
       "       -3.88076540e+12, -1.19593236e+12,  1.16313815e+12, -1.41081942e+12,\n",
       "        3.56349490e+12,  7.12345817e+11,  4.76398301e+12,  2.60002802e+12,\n",
       "        1.84224334e+12,  3.06318514e+12, -1.33316411e+12,  6.18515991e+11,\n",
       "       -2.64566982e+12, -1.01426612e+12, -4.76745537e+12, -3.59229268e+12,\n",
       "       -1.68056493e+12, -3.57479576e+12,  2.06628597e+12, -6.07535225e+11,\n",
       "        3.40447747e+12,  3.42181114e+12,  3.31401269e+12,  4.92289470e+12,\n",
       "        3.79997144e+11,  1.34187245e+12, -3.34878935e+12, -2.07865993e+12,\n",
       "       -3.24636729e+12, -5.48901934e+12,  5.87221409e+11, -2.27318240e+12,\n",
       "        2.60029053e+12,  8.21819706e+12,  4.79214839e+10, -3.11436331e+12,\n",
       "       -6.27732007e+11])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg.coef_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为了尽量地拟合数据，使得线条非常陡峭，数学上表示就是系数非常大"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "x = np.random.uniform(-3.0, 3.0, size=100)\n",
    "X = x.reshape(-1, 1)\n",
    "y = 0.5 * x + 3 + np.random.normal(0, 1, size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "def PolynomialRegression(degree):\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"lin_reg\", LinearRegression())\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "np.random.seed(666)\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "167.94010867772357"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "poly_reg = PolynomialRegression(degree=20)\n",
    "poly_reg.fit(X_train, y_train)\n",
    "y_predict = poly_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "y_plot = poly_reg.predict(X_plot)\n",
    "\n",
    "plt.scatter(x, y)\n",
    "plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "plt.axis([-3, 3, 0, 6])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_model(model):\n",
    "    X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "    y_plot = model.predict(X_plot)\n",
    "    \n",
    "    plt.scatter(x, y)\n",
    "    plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "    plt.axis([-3, 3, 0, 6])\n",
    "    plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
